var uid = 0

// Dep记录了Watcher
export default class Dep {
  constructor() {
    // 每实例一个就会有一个自己的id
    this.id = uid++
    // 用数组存储自己的订阅者.subs是subscribes的缩写,订阅者的意思
    // 这个数组存放Watcher的实例
    this.subs = []
    // console.log(111, this)
  }
  // 添加订阅
  addSub(sub) {
    this.subs.push(sub)
  }
  // 添加依赖
  depend() {
    // Dep.target就是我们指定的全局的位置
    // Dep.target就是Watcher
    // 这个target其实就是需要更新的数据也就是需要依赖的数据，在get中设置
    if (Dep.target) {
      this.addSub(Dep.target)
    }
  }

  // 通知更新
  notify() {
    // 浅克隆,防止改变原始subs
    const subs = [...this.subs]
    // 遍历
    for (let i = 0, l = subs.length; i < l; i++) {
      subs[i].update()
    }
  }
}
